package com.sishu.njrtsdms.domain.dto;

import com.sishu.njrtsdms.domain.core.Groups;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.Builder;
import org.jooq.types.ULong;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;


/**
 * 教学建设项目信息传输类
 *
 * @param tcptId                        模板id
 * @param projectName                   项目名称
 * @param declareBeginDateTime          申报查询起始日期时间
 * @param declareEndDateTime            申报查询结束日期时间
 * @param tcpDbycId                     项目归属年度配置信息id
 * @param tcpAuditStatusDictId          项目审核状态字典数据id
 * @param isDeleted                     项目是否删除
 * @param declarerUserId                项目申报人用户id
 * @param declarerRealName              项目申报人用户真实姓名
 * @param collegeId                     项目所属部门id
 * @param projectLevelDictId            项目等级字典id
 * @param projectPrizeOrderDictId       项目等次字典id
 * @param projectGpaBonusStandardDictId 项目绩点标准字典id
 * @param projectLeaders                项目负责人列表
 * @param projectAwardDetails           项目获奖详情
 * @param tmplAttrValueMap              项目特殊属性应映射集合
 * @param remark                        备注
 * @param createBy                      创建人用户id
 */
@Builder
public record TeachConPrjDTO(

        @NotNull(message = "项目使用模板id不可为空", groups = {Groups.Add.class})
        ULong tcptId,
        @Size(min = 1, max = 200, message = "项目名称最少一个字符,最多200个字符",
                groups = {Groups.Add.class, Groups.Update.class})
        @NotNull(message = "项目名称不可为空", groups = {Groups.Add.class})
        String projectName,
//        @NotNull(message = "归属年度不可为空",groups = {Groups.Add.class})
        ULong tcpDbycId,
        @NotNull(message = "项目等级不可为空", groups = {Groups.Add.class})
        ULong projectLevelDictId,
        ULong projectPrizeOrderDictId,
        @NotNull(message = "项目绩点标准不可为空", groups = {Groups.Add.class})
        ULong projectGpaBonusStandardDictId,
        List<ULong> projectLeaders,
        String projectAwardDetails,
        Map<String, String> tmplAttrValueMap,
        String remark,
        LocalDateTime declareBeginDateTime,
        LocalDateTime declareEndDateTime,
        ULong tcpAuditStatusDictId,
        Boolean isDeleted,
        ULong declarerUserId,
        String declarerRealName,
        ULong collegeId,
        ULong createBy


) {


}
